const express = require("express");
const router = express.Router();
const Db = require("../utils/db");
const createSql = require("../utils/Create_SQL");
const path = require('path');
const fs = require('fs');
const { errorCode, successCode, config } = require('../config/config');
const request = require("request");
const utils = require("../utils/utils.js");
const { type } = require("os");

router.get("/", (req, res) => {
    console.log("42452 ==>", createSql.select(['id', 'name']).from("table_name").where('id', 'like', '2').build())
    res.json({
        ...successCode[200],
        message: "该接口为测试接口，无实际意义",
        sql: createSql.select(['id', 'name']).from("table_name").where('id', 'like', '2').end()
    })
})

/**
 * @swagger
 * /api/test/juejin:
 *    get:
 *      tags:
 *      - 测试接口
 *      summary: 测试抓取掘金
 *      produces:
 *      - application/json
 *      responses:
 *        200:
 *         description: successful operation
 * */
router.get("/juejin", (req, res) => {
    res.json(successCode[200])
})

router.get("/tiku", (req, res) => {
    let json = fs.readFileSync(path.resolve(__dirname, '../public/data/tiku.json'), 'utf-8');
    json = JSON.parse(json);
    let all = [];
    for (let key in json) {
        let data = json[key].map(item => {
            return {
                source: key,
                type: item['题型'],
                question: item['试题正文'],
                answer: item['试题答案'],
                options: item['试题选项'],
                analysis: item['答案解析']
            }
        })
        all.push(...data);
    }
    return res.json({
        ...successCode[200],
        data: all,
    })
})

/**
 * @swagger
 * /api/test/sse:
 *    post:
 *      tags:
 *      - 测试接口
 *      summary: 测试sse
 *      produces:
 *      - application/json
 *      responses:
 *        200:
 *         description: successful operation
 * */

router.post("/sse", (req, res) => {
    res.writeHead(200, {
        'Content-Type': 'text/event-stream',
        'Cache-Control': 'no-cache',
        'Connection': 'keep-alive',
        'Access-Control-Allow-Origin': '*' // 根据需求调整CORS
    });
    let content = `# 高考满分作文 \n## 作者\n ### 时间 2025-07-10\n 在人生的漫长旅程中，每个人都无可避免地要与他人相处。这看似平常的人际交往，实则蕴含着无尽的学问与深意。

我们常常为了避免冲突，选择将自己的真实想法深埋心底，用沉默或附和来维持表面的和谐。然而，这种做法却如同埋下了一颗定时炸弹，在未来的某个时刻，可能会引发更大的矛盾与误解。我们害怕冲突，害怕面对不同意见时的尴尬与争执，却忘记了坦诚交流才是打开心扉、拉近彼此距离的钥匙。

坦诚交流，是一种勇气，更是一种智慧。当我们敢于直面自己的内心，敢于向他人表达真实的想法和感受时，我们便迈出了走向真正相遇的第一步。在坦诚的交流中，我们不再隐藏自己的观点，不再伪装自己的情感，而是以最真实的姿态去面对他人。或许会有分歧，或许会有争论，但正是这些碰撞与磨合，让我们更加了解彼此，让彼此的关系更加深厚而稳固。

古往今来，许多伟大的友谊与合作都是建立在坦诚交流的基础之上。马克思和恩格斯，这两位伟大的思想家，他们在共同的理想与追求下，坦诚地交流着各自的观点与见解，相互启发，相互扶持，共同为无产阶级的解放事业而奋斗。他们的友谊超越了时空，成为了人类历史上的一段佳话。而在现实生活中，我们也常常能看到那些敢于坦诚交流的人，能够收获真挚的友情和宝贵的合作伙伴。

坦诚交流，也是促进社会进步的重要力量。在一个开放、包容的'社会中，人们能够自由地表达自己的想法和诉求，不同的观点和意见能够得到充分的讨论和交流。这样的社会才会充满活力与创造力，才会不断地向前发展。反之，如果每个人都沉默不语，将自己的想法深埋心底，那么社会就会陷入僵化与停滞，无法进步与发展。

然而，坦诚交流并非易事。它需要我们放下内心的防备与偏见，以开放的心态去倾听他人的声音；它需要我们有足够的耐心与包容，去理解和接纳他人的不同；它需要我们有坚定的信念和勇气，去坚守自己的立场和原则。但只要我们勇敢地迈出这一步，努力去实践坦诚交流，我们就一定能够收获真正的相遇，收获更加美好的人生。

让我们都学会坦诚交流吧，用真诚的心去面对他人，用开放的胸怀去接纳不同。让我们在坦诚交流中，建立起更加紧密的人际关系，让我们的社会更加和谐与美好。因为，只有坦诚交流，才能让心相遇；只有心相遇，才能创造更美好的世界。
    `

    let str = ``
    res.write(`event: welcome\n`);
    res.write(`data: Welcome to the SEE stream!\n\n`);
    /**10个字开始返回直到最后*/
    let i = 0;
    // 延时时间
    let count = 10;
    let timer = setInterval(() => {
        // 300 - 1000 的随机数
        count = Math.random()*(20 - 1) + 1;
        res.write(`event: message\n`);
        res.write(`data: ${JSON.stringify({
            content: [
                {
                    text: {
                        value: content.slice(i, i + count),
                    }
                }
            ],
            type: "text",
            end: false
        })}\n\n`);
        i += count;
        if (i >= content.length) {
            res.write(`data: ${JSON.stringify({
                content: [
                    {
                        text: {
                            value: "",
                        }
                    }
                ],
                type: "text",
                end: true
            })}\n\n`);
            clearInterval(timer);
            res.end();
        }
    }, 50);

    req.on('close', () => {
        console.log('客户端关闭连接');
        // 在get 请求中需要加上这个代码 但是 post 不行 因为post 有 options 预检会直接关闭这个请求
        // res.end();
    });
})


module.exports = router;